<!DOCTYPE html>
<script src="../resources/runner.js"></script>
<script src="resources/utils.js"></script>
<link help="https://drafts.csswg.org/css-variables/#pending-substitution-value">
<div id="container" style="height: 100px; overflow: hidden"></div>
<script>
    createDOMTree(container, 2, 3);
    applyCSSRule(':root { --border: 4mm ridge rgba(170, 50, 220, .6); }');
    applyCSSRule(':root { --margin: 1px 2px 3px 4px; }');
    applyCSSRule(':root { --padding: 1px 2px 3px 4px; }');
    applyCSSRule(':root { --background: content-box radial-gradient(crimson, skyblue); }');

    const sequence_size = 2000;

    function create_var_sequence() {
        let chain = [];
        for (let i = 0; i < sequence_size; ++i) {
            chain.push(`var(--v${i}, )`);
        }
        return chain.join(' ');
    }

    applyCSSRule(`div { border: ${create_var_sequence()} var(--border); }`);
    applyCSSRule(`div { margin: ${create_var_sequence()} var(--margin); }`);
    applyCSSRule(`div { padding: ${create_var_sequence()} var(--padding); }`);
    applyCSSRule(`div { background: ${create_var_sequence()} var(--bakground); }`);

    PerfTestRunner.measureTime({
        description: 'Measure impact of resolving pending-substitution-values',
        run: function() {
            container.style.setProperty('display', 'none');
            forceStyleRecalc(container);
            container.style.setProperty('display', 'block');
            forceStyleRecalc(container);
        }
    });
</script>
